import sun.tools.jar.resources.jar;

public class 状态机模式 {
    public static void main(String[] args) {
        ElevatorContext elevator = new ElevatorContext();


        // 模拟电梯状态切换
        elevator.requestAction(); // 当前状态：停止 -> 上升


        elevator.requestAction(); // 当前状态：上升 -> 停止
        elevator.requestAction(); // 当前状态：停止 -> 上升
   //停止
        //上升
        //停止

    }
}
// 状态接口
interface ElevatorState {
    void performAction(ElevatorContext context);
}
// 具体状态：上升状态
class MovingUpState implements ElevatorState {
    @Override
    public void performAction(ElevatorContext context) {
        System.out.println("电梯正在上升...");
        // 状态切换到停止
        context.setState(new StoppedState());
    }
}
// 具体状态：下降状态
class MovingDownState implements ElevatorState {
    @Override
    public void performAction(ElevatorContext context) {
        System.out.println("电梯正在下降...");
        // 状态切换到停止
        context.setState(new StoppedState());
    }
}
// 具体状态：停止状态
class StoppedState implements ElevatorState {
    @Override
    public void performAction(ElevatorContext context) {
        System.out.println("电梯已停止...");
        // 状态可切换到上升或下降
        context.setState(new MovingUpState()); // 示例切换到上升状态
    }
}
// 上下文类
class ElevatorContext {
    private ElevatorState currentState;

    public ElevatorContext() {
        // 初始化默认状态
        this.currentState = new StoppedState();
    }

    public void setState(ElevatorState state) {
        this.currentState = state;
    }

    public void requestAction() {
        currentState.performAction(this); // 委托当前状态执行操作
    }
}